最后更新时间:2019年6月17日
功能介绍
地图数据增量更新提供在线数据增量更新与离线数据增量更新功能。适用于源数据部分变更后,在线地图与离线地图数据的同步更新。
实现离线数据增量更新功能,即在桌面端变更源数据后移动端增量更新离线数据包。
实现在线数据增量更新,即在线地图数据服务更新后,移动端在线动态同步更新。
功能接口
实现数据增量更新的接口非常简单,对应API程序包为com.zondy.mapgis.core.geodatabase,其核心接口为数据库对象DataBase,通过调用其updateAsync方法实现更新。
接口 | 说明 |
---|---|
DataBase.updateAsync() | 离线数据增量更新 |
离线数据增量更新 Sample详情
离线地图增量更新,指离线地图的源数据发生变更,如在桌面端对源地理数据库的数据进行了编辑,需要将变更的部分数据更新到移动端离线数据库中。移动端离线地图数据库,分为基础库(.mgdb)和更新库(.mudb),离线地图增量更新是将源数据库中变更的图层数据打包,生成离线更新库进行更新的过程。
1
首先利用MapGIS 10.3 桌面工具中的“地图数据转换工具”将原始地图数据生成移动数据包,作为增量更新的基础库。注意,在转换数据时,在选项设置中,需设置数据库类型为基础库。转换成功之后,可打开文件夹查看转换后的数据,生成的文件后缀为“.mgdb”。
2
当源数据发生了变更后,利用MapGIS 10.3 桌面工具中的“地图数据转换工具”,将变更后的地图数据生成移动数据包,作为增量更新的增量库。注意,在转换数据时,在选项设置中,只需勾选变更图层,并设置数据库类型为“更新库”。转换成功之后,可打开文件夹查看转换后的数据。生成的更新库后缀为“.mudb”,将数据拷贝到移动设备中。
1
//获取基础库和更新库的存储路径、基础数据的地图文档 String databasePath=Environment.getExternalStorageDirectory().getPath()+"/MapGIS Mobile 2D Sample/Map/MapEdit/武汉MKT.mgdb"; //基础库路径 String updateDBPath=Environment.getExternalStorageDirectory().getPath()+"/MapGIS Mobile 2D Sample/Map/IncrementalUpdate/change.mudb"; //更新库路径
2
DataBase dataBase=new DataBase(); //创建数据库 dataBase.open(databasePath); //打开数据库
3
调用Database的updateAsync方法进行增量更新操作,同时具有更新进度、结果的回调函数。
//增量更新 dataBase.updateAsync(updateDBPath, new DataBaseUpdateCallback() { @Override public void onUpdating(long arg0, long arg1, double arg2) { //更新中回调(参数:更新要素类总数、当前要素类的索引、更新百分比) Log.e("progress", "更新要素类总数" + arg0 + "\n当前更新" + arg1 + "\n更新了百分之" + arg2); } @Override public void onUpdateFinish(boolean arg0) { //完成后回调(参数:表示更新是正常完成还是异常完成) if (arg0) { Log.e("updateDB", "更新完成"); //停止数据服务请求 aMapView.stopCurRequest(new MapViewStopCurRequestCallback() { @Override public void onDidStopCurRequest() { aMapView.forceRefresh(); //强制刷新地图后即可查看到更新效果 } }); } } });
展示效果如下所示:
在线数据增量更新 Sample详情
移动端显示在线地图,当在线服务原始地图数据发生变化时,只要只要保证移动设备和IGServer服务器处于同一网络中,并且网络顺畅,调用强制刷新接口forceRefresh()可即时在移动设备中查看到更新效果。因为在线地图是实时从服务器中获取数据进行展示的。